﻿using System;
using System.Collections.Generic;
using System.Text;
using Manager.App_Code.IDAL;
using Manager.App_Code.DTO;
using System.Data;

namespace Manager.App_Code.DAL
{
    class PhieuDatPhongDAL : StandardConnectDB, IPhieuDatPhong
    {
        public List<DTO.PhieuDatPhongDTO> GetListPhieuDP()
        {
            List<PhieuDatPhongDTO> listphieudat = new List<PhieuDatPhongDTO>();

            DataTable dt = this.DTExecuteSelect("Select * from PhieuDatPhong");

            foreach (DataRow dr in dt.Rows)
            {
                listphieudat.Add(ConvertObjectDataRowToPhieuDtPhongDTO(dr));
            }

            return listphieudat;
        }


        public PhieuDatPhongDTO GetPhieuDangKyPhongByID(string MaPhieuDat)
        {
            PhieuDatPhongDTO phieudat = new PhieuDatPhongDTO();

            Dictionary<string, object> paramlist = new Dictionary<string, object>();

            paramlist.Add("@MaPhieuDat", MaPhieuDat);

            DataTable dt = this.DTExecuteSelect("SP_PhieuDatPhong_GetByID", paramlist);

            phieudat =ConvertObjectDataRowToPhieuDtPhongDTO(dt.Rows[0]);

            return phieudat;
            

        }


        public bool InsertPhieuDP(DTO.PhieuDatPhongDTO phieudp)
        {

            Dictionary<string, object> paramlist = new Dictionary<string, object>();
            paramlist.Add("@Stt", phieudp.Stt);
            paramlist.Add("@MaPhieuDat", phieudp.MaPhieuDat);
            paramlist.Add("@Ngaylap", phieudp.NgayLap);
            paramlist.Add("@NguoiDat", phieudp.NguoiDat);
            paramlist.Add("@Diachi", phieudp.DiaChi);
            paramlist.Add("@LienHe", phieudp.LienHe);
            paramlist.Add("@DienThoaiNguoiDat", phieudp.DienThoaiNguoiDat);
            paramlist.Add("@SoFax", phieudp.SoFax);
            paramlist.Add("@TenKhach", phieudp.TenKhach);
            paramlist.Add("@DienThoaiKhach", phieudp.DienThoaiKhach);
            paramlist.Add("@NgayDen", phieudp.NgayDen);
            paramlist.Add("@NgayDi", phieudp.NgayDi);
            paramlist.Add("@TienCoc", phieudp.TienCoc);
            paramlist.Add("@DonViTienTe", phieudp.DonViTienTe.MaDonVi);

            return this.ExecuteUpdate("SP_PhieuDatPhong_Insert", paramlist);

        }

        public bool UpdatePhieuDP(DTO.PhieuDatPhongDTO phieudp)
        {
            throw new NotImplementedException();
        }

        public bool DeletePhieuDP(DTO.PhieuDatPhongDTO phieudp)
        {
            throw new NotImplementedException();
        }


        public DTO.PhieuDatPhongDTO ConvertObjectDataRowToPhieuDtPhongDTO(System.Data.DataRow dr)
        {
            if (dr != null)
            {
                PhieuDatPhongDTO phieudat = new PhieuDatPhongDTO();
                phieudat.Stt = long.Parse(dr["Stt"].ToString());
                phieudat.MaPhieuDat = dr["MaPhieuDat"].ToString();
                if (dr["Ngaylap"].ToString() != "")
                    phieudat.NgayLap = DateTime.Parse(dr["Ngaylap"].ToString());
                phieudat.NguoiDat = dr["NguoiDat"].ToString();
                phieudat.DiaChi = dr["Diachi"].ToString();
                phieudat.LienHe = dr["LienHe"].ToString();
                phieudat.DienThoaiNguoiDat = dr["DienThoaiNguoiDat"].ToString();
                phieudat.SoFax = dr["SoFax"].ToString();
                phieudat.TenKhach = dr["TenKhach"].ToString();
                phieudat.DienThoaiKhach = dr["DienThoaiKhach"].ToString();

                if (dr["NgayDen"].ToString() != "")
                    phieudat.NgayDen = DateTime.Parse(dr["NgayDen"].ToString());
                if (dr["NgayDi"].ToString() != "")
                    phieudat.NgayDi = DateTime.Parse(dr["NgayDi"].ToString());
                phieudat.TienCoc = double.Parse(dr["TienCoc"].ToString());

                if (dr["DonViTienTe"].ToString() != "")
                {
                    ITienTe itiente = new TienTeDAL();
                    phieudat.DonViTienTe = itiente.GetTienTeByID(dr["DonViTienTe"].ToString());

                }

                return phieudat;

            }
            else
                return null;

        }





        public List<PhieuDatPhongDTO> GetListPhieuDPByNgayLap(DateTime TuNgay, DateTime DenNgay)
        {
            List<PhieuDatPhongDTO> listphieudat = new List<PhieuDatPhongDTO>();

           
            Dictionary<string, object> paramlist = new Dictionary<string, object>();
            paramlist.Add("@TuNgay", TuNgay);
            paramlist.Add("@DenNgay", DenNgay);
            DataTable dt = this.DTExecuteSelect("SP_PhieuDatPhong_GetByNgayDat", paramlist);

            foreach (DataRow dr in dt.Rows)
            {
                listphieudat.Add(ConvertObjectDataRowToPhieuDtPhongDTO(dr));
            }

            return listphieudat;
        }
    }


}
